home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / dskctr.atr < prev    next >
Text File  |  1995-04-22  |  3KB  |  103 lines

  1. 100 REM <<< PERCOM DISK CONTROL >>> 
  2. 105 REM <<<   SAMPLE PROGRAM    >>> 
  3. 110 REM REVISED TO WORK W/2 DRIVE SYS. 
  4. 120 DIM BUF$(12):REM OPTION TABLE 
  5. 125 DIM R$(1):REM RESPONSES GO HERE 
  6. 130 Z=ADR("    ") 
  7. 140 DATA 104,76,89,228 
  8. 150 FOR I=0 TO 3 
  9. 160 READ X 
  10. 170 POKE Z+I,X 
  11. 180 NEXT I 
  12. 190 DCB=768 
  13. 200 DATA 49,1,78,64,0,0,1,0,12,0,1,0 
  14. 210 REM DEVICE,UNIT,COMMAND,STATUS(DIR), 
  15. 220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR 
  16. 230 FOR I=0 TO 11:REM BUILD THE DCB 
  17. 240 READ X 
  18. 250 POKE DCB+I,X 
  19. 260 NEXT I 
  20. 270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS 
  21. 280 X=INT(A/256) 
  22. 290 POKE DCB+5,X 
  23. 300 POKE DCB+4,A-X*256 
  24. 301 SETCOLOR 4,9,4:? "}":? :?  
  25. 302 PRINT "DRIVE NUMBER";:INPUT I 
  26. 304 POKE DCB+1,I:REM SET DRIVE IN DCB 
  27. 310 X=USR(Z):REM READ THE OPTION TABLE 
  28. 320 PRINT "DRIVE NUMBER OF TRACKS=";PEEK(A) 
  29. 330 PRINT "DRIVE STEP RATE CODE=";PEEK(A+1) 
  30. 340 PRINT "DRIVE SECTORS/TRACK=";PEEK(A+3) 
  31. 350 PRINT PEEK(A+4)+1;" SIDED DRIVE" 
  32. 360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380 
  33. 370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY" 
  34. 380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR" 
  35. 390 PRINT  
  36. 400 PRINT "Make it single (S) or double (D)" 
  37. 410 PRINT "  density";:INPUT R$ 
  38. 420 IF ASC(R$)=ASC("D") THEN 470 
  39. 430 POKE A+5,0:REM MAKE SINGLE DENSITY 
  40. 440 POKE A+6,0 
  41. 450 POKE A+7,128 
  42. 455 POKE 4880+I,1:REM PATCH TO CTRL D2 
  43. 460 GOTO 500 
  44. 470 POKE A+5,4:REM MAKE DOUBLE DENSITY 
  45. 480 POKE A+6,1 
  46. 490 POKE A+7,0 
  47. 495 POKE 4880+I,2:REM PATCH TO CTRL D2 
  48. 500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE 
  49. 510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION) 
  50. 520 X=USR(Z):REM UPDATE DRIVE OPTIONS 
  51. 530 END  
  52. 100 REM <<< PERCOM DISK CONTROL >>> 
  53. 105 REM <<<   SAMPLE PROGRAM    >>> 
  54. 110 REM REVISED TO WORK W/2 DRIVE SYS. 
  55. 120 DIM BUF$(12):REM OPTION TABLE 
  56. 125 DIM R$(1):REM RESPONSES GO HERE 
  57. 130 Z=ADR("    ") 
  58. 140 DATA 104,76,89,228 
  59. 150 FOR I=0 TO 3 
  60. 160 READ X 
  61. 170 POKE Z+I,X 
  62. 180 NEXT I 
  63. 190 DCB=768 
  64. 200 DATA 49,1,78,64,0,0,1,0,12,0,1,0 
  65. 210 REM DEVICE,UNIT,COMMAND,STATUS(DIR), 
  66. 220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR 
  67. 230 FOR I=0 TO 11:REM BUILD THE DCB 
  68. 240 READ X 
  69. 250 POKE DCB+I,X 
  70. 260 NEXT I 
  71. 270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS 
  72. 280 X=INT(A/256) 
  73. 290 POKE DCB+5,X 
  74. 300 POKE DCB+4,A-X*256 
  75. 301 SETCOLOR 4,9,4:? "}":? :?  
  76. 302 PRINT "DRIVE NUMBER";:INPUT I 
  77. 304 POKE DCB+1,I:REM SET DRIVE IN DCB 
  78. 310 X=USR(Z):REM READ THE OPTION TABLE 
  79. 320 PRINT "DRIVE NUMBER OF TRACKS=";PEEK(A) 
  80. 330 PRINT "DRIVE STEP RATE CODE=";PEEK(A+1) 
  81. 340 PRINT "DRIVE SECTORS/TRACK=";PEEK(A+3) 
  82. 350 PRINT PEEK(A+4)+1;" SIDED DRIVE" 
  83. 360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380 
  84. 370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY" 
  85. 380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR" 
  86. 390 PRINT  
  87. 400 PRINT "Make it single (S) or double (D)" 
  88. 410 PRINT "  density";:INPUT R$ 
  89. 420 IF ASC(R$)=ASC("D") THEN 470 
  90. 430 POKE A+5,0:REM MAKE SINGLE DENSITY 
  91. 440 POKE A+6,0 
  92. 450 POKE A+7,128 
  93. 455 POKE 4880+I,1:REM PATCH TO CTRL D2 
  94. 460 GOTO 500 
  95. 470 POKE A+5,4:REM MAKE DOUBLE DENSITY 
  96. 480 POKE A+6,1 
  97. 490 POKE A+7,0 
  98. 495 POKE 4880+I,2:REM PATCH TO CTRL D2 
  99. 500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE 
  100. 510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION) 
  101. 520 X=USR(Z):REM UPDATE DRIVE OPTIONS 
  102. 530 END  
  103.